package com.itheima.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.Map;

public class JwtUtils {

    // 固定密钥与测试类一致
    private static final String SECRET_KEY = "aXRoZWltYQ==";
    // 过期时间 12 小时（毫秒单位）
    private static final long EXPIRE_TIME = 12 * 3600 * 1000;

    /**
     * 生成JWT令牌
     * @param claims 自定义载荷信息（如用户ID、用户名等）
     * @return 生成的JWT令牌字符串
     */
    public static String generateJwtToken(Map<String, Object> claims) {
        return Jwts.builder()
                .signWith(SignatureAlgorithm.HS256, SECRET_KEY) // 使用测试类中的密钥
                .setClaims(claims) // 添加自定义信息
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRE_TIME)) // 设置12小时过期
                .compact(); // 生成令牌
    }

    /**
     * 解析JWT令牌
     * @param token JWT令牌字符串
     * @return 解析后的Claims载荷信息
     */
    public static Claims parseJwtToken(String token) {
        return Jwts.parser()
                .setSigningKey(SECRET_KEY) // 使用测试类中的密钥
                .parseClaimsJws(token) // 解析令牌
                .getBody(); // 获取载荷信息
    }
}